热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

测量|气体_基于STM32单片机的智能家居测量系统设计

篇首语:本文由编程笔记#小编为大家整理,主要介绍了基于STM32单片机的智能家居测量系统设计相关的知识,希望对你有一定的参考价值。当今的家庭生活面临着各种环境和健康问题&

篇首语:本文由编程笔记#小编为大家整理,主要介绍了基于STM32单片机的智能家居测量系统设计相关的知识,希望对你有一定的参考价值。


当今的家庭生活面临着各种环境和健康问题,周围的生活参数存在潜在的隐患,包括室温、气体中有害物质的浓度等。在新时代,人们越来越关注健康及其相关因素。随着微电子技术的应用,电器的普及,以及单片机和传感器性能的快速提高,它可以通过单片机和传感器实现对室内各种环境参数的实时监测。进行调整,使生活体验更好[1]。当前智能家居测量系统已经可以实现基本环境数据的测量,但是目前智能家居测量系统在实际应用当中存在成本高、可测量数据少、无法进行实时调控、行业标准不统一、跨领域协作困难等问题[2]。

针对上述问题,为实现智能家居测量系统的价格合理化、标准化、简易操作、注重使用者体验、全面性等发展趋势。开发基于STM32 单片机的智能家居测量系统本设计主要论述了由单片机控制的室内环境监测装置,以实现数字化和智能化。各种室内环境参数可以通过显示装置实时显示在用户面前,再通过报警电路,用户可以根据环境情况及时采取相应措施,从而享受更健康、更安全的生活[3]。

智能家居测量系统总体设计方案

该系统由硬件系统、原子云服务器和移动设备三部分组成。总体方案结构如图所示。硬件系统由单片机、传感器模块、Wi-Fi(wireless fidelity,无线网络通信技术)无线模块、电源模块等组成。单片机作为硬件系统的主控芯片,对传感器模块采集的家庭环境信息进行处理,电源模块为整个硬件系统的各个模块供电[4]。原子云服务器作为本系统的中转站与硬件系统交互环境信息,并对登录信息进行处理,当用户在移动端设备界面中请求时将环境信息发送给界面,实现实时回传检测数据[5]。当界面中有控制请求信息时,对控制信息进行处理,移动端设备界面中包含注册界面、登录界面、控制界面三大模块,环境信息的显示及警报均在控制界面中实现[6]。如图1为系统工作流程图。

系统硬件设计

2.1 STM32单片机

选择STM32 单片机作为智能家居控制系统的主控中心,实现系统高性能、低功耗的应用需求。本文选用正点原子生产的STM32F407 单片机系统,STM32F407提供了工作频率为168 MHz 的Cortex-M4 内核(具有浮点单元)的性能。

2.2 主电路设计

首先,设计外围电路,包含空气成分传感器、温湿度传感器、烟雾传感器、摄像头模块。其次添加了Wi-Fi 模块,使系统具备远程通信,控制以及触发警报的功能。除此之外,还包括微控制电路、串口电路以及串口通信电路等多个外围电路。

大量实验表明,最适宜人的温湿度是:夏天温度20~27 ℃,湿度为30%60%;冬天温度1825 ℃,湿度为30%~80%。一般情况下, 室内温度控制在18~26 ℃,湿度为30%~70% 时,人体感觉最舒适。因此对室内进行温度、湿度、空气质量等参数检测,并通过远程控制进行调整能获得人体舒适的家居环境。
2.3 传感器设计
2.3.1 温湿度传感器

BME680 环境传感器是一款MEMS(micro-electromechanical system,微机电系统) 的环境传感器,可测量温度湿度参数,非常适用于监测空气数据。由于采用了MEMS 技术,该传感器的体积非常小,功耗低,因此也适用于低功率场合,如可穿戴家居设备。

2.3.2 烟雾气体传感器

MQ-2 烟雾气体传感器模块是用于监控烟雾气体(例如液化气和天然气) 的模块。它具有信号输出指示和双信号输出的特点。可直接连接单片机,模拟输出0-5 V 电压,浓度越高,电压越高。对液化气,天然气和城市燃气具有良好的敏感性。具有长期使用寿命和可靠的稳定性,并具有快速响应恢复的特点。
2.3.3 空气质量传感器

SGP30 气体传感器模块TVOC/eCO2 空气质量甲醛二氧化碳测量模块。SGP30 是一种金属氧化物气体传感器,在单个芯片上具有多个传感器元件。四个气体传感元件集成在其中,并具有完全校准的空气质量输出信号。此外,SGP 易于集成,可以将金属氧化物气体传感器集成到移动设备中,为智能家居,家用电器和物联网应用中的环境监控开辟了新的可能性。

2.3.4 WIFI模块

该模块使用串口(LVTTL) 与MCN( 或其他串口设备)通信,并内置TCP/IP 协议栈,可实现串口和Wi-Fi 之间的转换。该模块支持串口到Wi-Fi STA,串口到AP 和Wi-Fi STA + Wi-Fi AP 模式,从而快速构建串口-Wi-Fi 数据传输方案。该模块体积小,通过6个2.54 毫米的间距引脚连接到外部,并且可以免费连接到原子云服务器。

系统软件设计

设计需要用到STM32F407 单片机上集成的电路系统,另外加装外部传感器,在环境参数超过人体健康范围的时候,使用单片机上集成的蜂鸣器发出警报声,使用声音警示环境变化[7]。

家庭环境参数使用传感器来收集信号。该功能与人类的感官一致,并且处于所有信息处理系统的最前沿[8]。传感器类型的选择应考虑传感器参数的设计要求,如测量范围、稳定性等,然后对每个测量参数进行不同的测试,最后以实际结果为准,选择最佳选择计划[9]。通过对传感信号采集和处理,单片机系统根据筛选结果分为数据采集、校正、分析和报警[10]。为保证信号的准确性,首先,主控芯片数字值进行校正和补偿,并对数据的准确性进行综合分析,是否超过设定的限值,否则报警[11]。

3.1 数据采集前端软件设计

按照中华人民共和国GB/T1883-2002《室内空气质量标准》,确定了室内温度、湿度、有毒气体含量等相关正常参数的范围。根据居家生活实际环境与国家标准确定传感器的工作模式,将其成本和体积降低,进一步提高性价比。一旦确定了测量参数,即着手制定一个总体设计计划[12]。

程序的一般流程如图2所示。首先启动系统,然后各单片机和传感器模块开始工作。MQ-2 传感器对空气中有毒物质的浓度进行实时检测,如果达到预定限度,就会向单片机发送信号。如果接收到信号,它会发出警报。如果没有,它将继续被检测。BME680 温湿度传感器和SGP30 空气质量传感器同时实时采集室内空气成分含量,并将参数发送至单片机。单片机收到对Wi-Fi无线模块的请求后,通过串口向Wi-Fi 模块传输数据,Wi-Fi 模块透明实时传输数据。使用者可以在移动设备端登陆云账号并查询实时测量的家庭环境数据。图2为系统总体设计的工作流程图。

图2 系统总体设计流程

系统软件设计流程复杂,涉及面广,包括数据硬件软件、原子云服务器设计、移动终端硬件设计,这是首次推出各传感器模块采集环境信息和监控控制系统名称信息。通过端口发送,服务器接收对设备的控制。指令过程中,可将数据通过网络传输至界面屏,通过无线通讯、数据采集、发送、发送等方式读取数据,进而实现报警作用。

3.2 数据处理方法

在前端过滤错误数据后,执行下一个数据操作。首先,在配置功能中,在寄存器中获取相关数据分析功能,以进一步获取所需数据。以下以BME680 传感器举例。首先与BME680 进行交互,但是BME680 的读写取决于特定的硬件平台,因此它们被操作为对象。在执行相关操作时,如果需要控制时序,则需要使用延迟操作。延迟处理始终取决于特定的软件和硬件平台,因此延迟处理被视为对象的操作。而使用SPI(serial peripheral interface,串行外设接口)时,没有设备地址但有片选信号,如何操作片选信号依赖于硬件平台,将对片选的操作定义为对象的操作函数。一个对象必须对其进行初始化才可使用。初始化对象主要有四个方面的内容:检查对象赋值的合法性;属性赋初值;为对象操作指定函数指针;对象所指向设备的初始配置。通常一些设备需要定义操作码来实现读写区分,但BME680 采取了将寄存器地址的最高位置零表示为写。之所以可以这样定义,是因为BME680 寄存器地址分配的特殊性决定的。改变寄存器地址的最高位也能区分不同的寄存器,绝不会重复。

BME680 环境传感器支持SPI 和I2C(I2C总线)接口,SPI 也支持3 线和4 线模式,但在测试应用中只使用I2C 接口,SPI 接口还有待测试。BME680 环境传感器在使用SPI 接口时支持SPI 模式0(CPOL = CPHA = 0) 和模式3(CPOL = CPHA = 1)。使用I2C 接口时,支持标准模式、快速模式和高速模式。而且在使用I2C 接口时,SDO 引脚必须接高电平或低电平,以确定设备地址。声明不能立即使用此对象变量,并且需要使用驱动程序中定义的初始化函数来初始化此变量。BME680 环境传感器有一个测量范围寄存器。这个寄存器的值对应于两组计算常数。这两组常数用于计算测量值。一般来说,BME680 环境传感器本身的读写操作并不复杂,但是计算和校正之间的关系相对复杂,尤其是空气质量数据更应该注意这种校正关系。另外传感器与上述BME680 传感器数据处理方法基本类似,相似算法本文不做过多赘述。

3.3 云服务器软件设计

UI 界面作为用户与MCU 系统之间的交互界面,可以提高用户的直观感觉。但是,UI 接口不能直接与MCU 系统交互,需要服务器作为传输来实现它们之间的信息传输。因此,设计了系统的UI 界面和服务器。考虑到QT 具有可用C++ 编写UI 框采用QT 进行UI界面设计。此外,由于TCP 服务器在应对多网关数据同时接入时会存在一定的性能损耗,本系统采用基于Linux 下的C 语言编程设计原子云服务器。

系统可靠性测试和传感器标定

4.1 系统可靠性测试
4.1.1 居家环境测试

系统稳定性与可靠性的低下会直接导致抗干扰能力较差。单片机的应用范围远远超过了计算机和其他计算设备的总和,计算机工程的许多实际应用往往会产生比人类更多的控制程序。在这种情况下,很多技术人员往往会选择同时使用多个控制程序,相互补充完善。但是需要注意的是,在这个过程中,软件干扰是不活跃的,而硬件干预是活跃的。所以达到较高的抗干扰能力。只有技术人员将硬件与软件抗干扰相结合,并且在这一过程中更加细致周到地分析干扰源,才能够真正地起到完善系统稳定性的效果。

智能家居测量系统在实际居家环境中测试记录各传感器数据,并制成如图3至图6。

图3 温度湿度

图4 气压

图5 天然气/VTOC含量

图6 二氧化碳含量
分析上述折线图可得,日温湿度曲线变化从上午八点到十二点是呈上升曲线,一般环境温湿度会随着日出而变化。气压折线图有一个上升曲线,查阅资料得知,一天中,气压有一个最高值、一个最低值,分别出现在9~10 时和15~16 时,还有一个次高值和一个次低值,分别出现在21~22 时和3~4 时。气压日变化幅度较小,一般为0.1~0.4 kPa,并随纬度增高而减小。二氧化碳折线图有小幅度的波动,经分析得出,这样的波动在误差范围内,是由于居家人数变化造成的数据轻微波动,峰值的出现不影响参数总体的测量。

4.1.2 测试结果分析

实测数据是一周内同一时间段同一环境下固定测量结果,取加权平均之后得到以上折线图。如图得到传感器的测量数据可知,在实际居家环境中,环境数据时刻在变化,系统整体稳定性可靠,可保证长时间工作不会过热死机,传感器可持续稳定的工作。

4.2 传感器定标

测试系统在真实家居环境中的工作状态,得到真实的传感器采样数据,反馈到相应的传感器数据计算函数。在更高精度的传感器同测量环境下进行对标,以获取更高精度的测量数据。

4.2.1 传感器采集

因为本测量系统涉及多个传感器同时工作,遂即采用单独定标法。由于传感器的设计不同,零件的加工存在误差,以及装配调整状态不完全相同的因素,校准后每个传感器的灵敏度不一致。但是,从用户使用的角度来看,希望同一型号的产品应具有相同的灵敏度,输入阻抗和其他技术参数,并且初始零输出应尽可能细微,从而最大限度地减少在使用中调整系统的工作量,最大限度地提高测量精度。传感器输入和输出之间的工作特性与非线性,滞后和非重复性问题有关。与线性传感器相比,最好的解决方案是在每个传感器测得的实际标准曲线中拟合一条直线,并且每个最大偏差曲线与直线的偏差将最小。例如,具有相同特性的传感器具有最高的精度。校准线可以用线性方程y = kx + B表示,因为方程中的B 是传感器输出零的初始值,k 是传感器输出的灵敏度斜率。其中,x 和y 是来自传感器的实验( 校准)数据,因此通常使用平均斜率法或最小二乘法来处理并获得直线。如图7 为最小二乘法拟合曲线图。

图7 最小二乘法拟合曲线

4.2.2 定标结果分析

综合测试结果的主要内容是对温湿度传感器、烟雾气体传感器、空气质量传感器进行静态定标、动态定标以及补偿。静态定标或静态校准的方法可以获得测量系统的静态特性。本次传感器定标校准操作过程简单,但是耗时较多,主要是多次重复性测量。得出各个传感器需要进行改善才可以拥有良好的静态特性,这是需要通过计算传感器的静态性能指标。对上述数据分别采用了分段拟合和分段直线拟合两种方法,保证了迟滞、精度和重复性的要求。通过拟合测试得到静态定标的基本方法,熟悉了数据处理的过程。测试系统的动态特性是其内的一种属性,这种属性只有系统受到激励之后才能明显表现出来,并且这隐含在系统的响应之中。阶跃响应法是以阶跃信号作为测试系统的输入,通过对系统的输出响应的测试,从中计算出系统的动态特性参数。本次定标已经知道上述传感器的动态特性符合一阶模型,所以用阶跃响应法可方便测出。

系统的提升与改进
智能家居测量系统相比较传统机械仪表测量,其功能全面性、智能化程度更高,可更快速便捷的获取实时数据。体积较小,集成化程度高,现已成为智能设备未来的发展新方向。

在较为传统的机械仪表测量系统中,环境数据的监测需要依靠传统的机械测量方式,有误差大、反应慢、测量周期长等缺点,并且存在危害性环境不适宜机械仪器测量。但是智能家居测量系统正好克服这些缺点,因为其工作环境可以与监测显示系统分开,做到云上传数据并且云读取。这样大大减少了危害环境下对人体的伤害,并且可以做到在环境指数超标时及时警报提醒。对家居环境实时测量以抑制复杂环境对人可能造成的有害影响。

集成化智能家居测量系统可以很大程度的节约成本,降低使用难度,并且在单一传感器出现故障的时候可以更换维修,降低维护成本。集成化的环境测量系统体积较小,耗能少,可与智能手机智能云互联,在外也可实时读取家庭环境数据。

【stm32学习资料分享】给大家分享一些stm32学习资料,感兴趣的点击下方链接即可学习:
学习交流群:607439754
(stm32 USART串口应用)
PWM脉宽调制技术
(stm32 温湿度采集)
( ADC读取光照传感器)
stm32之SPI通信
stm32 如何用DMA搬运数据
智能小车设计
四轴飞行器开发


推荐阅读
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文介绍了新款奇骏的两个让人上瘾的功能,分别是智能互联系统和BOSE音响。通过对新款奇骏的配置和功能进行评测,探讨了这两个新增功能的使用体验和优势。此外,还介绍了新款奇骏的其他配置和改进,如增加的座椅和驾驶辅助系统,以及内饰的舒适性提升。对于喜欢音响的消费者来说,BOSE音响的升级也是一个亮点。最后,文章提到了BOSE音响的数字还原能力,以及7座版无法配备BOSE音响的原因。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 2022年的风口:你看不起的行业,真的很挣钱!
    本文介绍了2022年的风口,探讨了一份稳定的副业收入对于普通人增加收入的重要性,以及如何抓住风口来实现赚钱的目标。文章指出,拼命工作并不一定能让人有钱,而是需要顺应时代的方向。 ... [详细]
  • 该ROM为红米3S3X手机提供了最强大的自定义功能,包括美观流畅的界面、全新的起航动画、魔幻的动画效果以及冰箱冻结功能。同时,还提供了高级设置,包括悬浮窗口显示自定义、WIFI密码查看器、S8炫酷跑马灯显示自定义等多项实用功能。此外,该ROM还优化了手机的待机时间、wifi连接速度,并支持状态栏实时网速显示和电池电量百分比显示。 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
author-avatar
MC红石粉
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有